<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //使用arr1=arr2的语法不会克隆数组
        //浅克隆：只克隆数组的第一层，如果是多维数组，会藕断丝连
        //深克隆：克隆数组的所有层，要使用递归技术

        //浅克隆
        var arr1=[1,2,3,4];
        var result=[];
        for(var i=0;i<arr1.length;i++){
            result.push(arr1[i])
        }
        console.log(result)//[1,2,3,4]
        console.log(result==arr1)//false  克隆成功 因为他们的地址不一样
        arr1.push(55)
        console.log(arr1)//[1,2,3,4,55]        
        console.log(result)//[1,2,3,4]

        //深克隆
        //使用递归思想
        //如果遍历到的项是基本类数值，则直接推入结果数组
        //如果遍历到的项又是数组，则重复执行浅克隆操作

        var arr1=[33,44,55,[11,22,[33,44]]]//原数组
        function deepClone(arr){
            var result=[]
            //遍历数组每一项
            for (var i=0;i<arr.length;i++){
                if(Array.isArray(arr[i])){
                    result.push(deepClone(arr[i]))
                }else{ 
                    result.push(arr[i])
                }
                console.log('-----------'+i,result)
            }
            console.log("+++"+result)
            return result
        }
        var arr2=deepClone(arr1);

        console.log(arr2)//[33,44,55,[11,22,[33,44]]]
        console.log(arr1==arr2)//false

    </script>
</body>
</html>